# 有语的第一个项目实践，外星人大战项目
# 第三章，飞船设计思路
# 22/9/8
import pygame


class Ship:
    """管理飞船的类"""

    def __init__(self, ai_game):
        """"""
        self.screen = ai_game.screen
        self.screen_rect = ai_game.screen.get_rect()
        self.settings = ai_game.settings

        # 加载飞船图像    获取外接矩形
        self.image = pygame.image.load("image/plane.bmp")
        self.rect = self.image.get_rect()

        # 对于每一艘飞船，将其放置于底部
        self.rect.midbottom = self.screen_rect.midbottom

        # 转换self.rect.x的数据类型，使其移动速度可以不为整数像素
        self.x = float(self.rect.x)
        self.y = float(self.rect.y)

        # 移动标记
        self.moving_right = False
        self.moving_left = False
        self.moving_top = False
        self.moving_bottom = False

    def update(self):
        # 当按下右方向键时，飞船向右移动ship_speed像素
        """self.rect.right 返回飞船外接矩形右边缘的坐标。
        如果这个值小于self.screen_rect.right的值，就说明飞船未触及屏幕右边缘"""
        if self.moving_right and self.rect.right <= self.screen_rect.right:
            self.x += self.settings.ship_speed
        # 当按下左方向键时，飞船向左移动ship_speed像素
        if self.moving_left and self.rect.left > 0:
            self.x -= self.settings.ship_speed
        # 向下移动
        if self.moving_bottom and self.rect.bottom <= self.screen_rect.height:
            self.y += self.settings.ship_speed
        # 向上移动
        if self.moving_top and self.rect.top > 0:
            self.y -= self.settings.ship_speed

        self.rect.x = self.x
        self.rect.y = self.y

    def blitme(self):
        self.screen.blit(self.image, self.rect)

    def center_ship(self):
        self.rect.midbottom = self.screen_rect.midbottom
        self.x = float(self.rect.x)
        self.y = float(self.rect.y)
